<?php

namespace Gds\VenteBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Gds\VenteBundle\Entity\BonLivraisonClient
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Gds\VenteBundle\Entity\BonLivraisonClientRepository")
 */
class BonLivraisonClient {

    /**
     * @ORM\ManyToOne(targetEntity="Gds\UserBundle\Entity\User", inversedBy="bon_livraison_client")
     * @ORM\JoinColumn(nullable=false)
     */
    private $user;

    /**
     * @ORM\ManyToOne(targetEntity="Gds\ArticleBundle\Entity\Departement", inversedBy="bon_livraison")
     * @ORM\JoinColumn()
     */
    private $departement;

    /**
     * @ORM\ManyToOne(targetEntity="Gds\VenteBundle\Entity\Devis", inversedBy="bon_livraison")
     * @ORM\JoinColumn()
     */
    private $devis;

    /**
     * @ORM\ManyToOne(targetEntity="Gds\VenteBundle\Entity\BonCommandeClient", inversedBy="bon_livraison")
     * @ORM\JoinColumn()
     */
    private $bon_commande;

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\LigneReglementClient", mappedBy="bon_livraison")
     */
    private $lignes_reglements; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\ManyToOne(targetEntity="Gds\VenteBundle\Entity\Client", inversedBy="bon_livraisons")
     * @ORM\JoinColumn(nullable=false)
     */
    private $client;

    /**
     * @ORM\ManyToOne(targetEntity="Gds\VenteBundle\Entity\FactureClient", inversedBy="bon_livraisons")
     */
    private $facture;

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\LigneBonLivraisonClient", mappedBy="bon_livraison", cascade={"persist", "remove"})
     */
    private $lignes_bon_livraison; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var \DateTime $date
     *
     * @ORM\Column(name="date", type="date")
     */
    private $date;

    /**
     * @var integer $heure
     *
     * @ORM\Column(name="heure", type="integer")
     */
    private $heure;

    /**
     * @var string $reference
     *
     * @ORM\Column(name="reference", type="string", length=255)
     */
    private $reference;

    /**
     * @var float $reste
     *
     * @ORM\Column(name="reste", type="decimal", scale=3)
     */
    private $reste;

    /**
     * @var float $montant_ttc
     *
     * @ORM\Column(name="montant_blanc_ttc", type="decimal", scale=3)
     */
    private $montant_blanc_ttc;

    /**
     * @var float $montant_noir
     *
     * @ORM\Column(name="montant_noir_ttc", type="decimal", scale=3)
     */
    private $montant_noir_ttc;

    /**
     * @var boolean $is_supprimer
     *
     * @ORM\Column(name="is_supprimer", type="boolean")
     */
    private $is_supprimer;


    /**
     * Constructor
     */
    public function __construct() {
        $this->lignes_reglements = new \Doctrine\Common\Collections\ArrayCollection();
        $this->lignes_bon_livraison = new \Doctrine\Common\Collections\ArrayCollection();
        $this->is_supprimer = false;
    }

    public function __toString() {
        return $this->reference;
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId() {
        return $this->id;
    }

    /**
     * Set date
     *
     * @param \DateTime $date
     * @return BonLivraisonClient
     */
    public function setDate($date) {
        $this->date = $date;

        return $this;
    }

    /**
     * Get date
     *
     * @return \DateTime 
     */
    public function getDate() {
        return $this->date;
    }

    /**
     * Set heure
     *
     * @param integer $heure
     * @return BonLivraisonClient
     */
    public function setHeure($heure) {
        $this->heure = $heure;

        return $this;
    }

    /**
     * Get heure
     *
     * @return integer 
     */
    public function getHeure() {
        return $this->heure;
    }

    /**
     * Set reference
     *
     * @param string $reference
     * @return BonLivraisonClient
     */
    public function setReference($reference) {
        $this->reference = $reference;

        return $this;
    }

    /**
     * Get reference
     *
     * @return string 
     */
    public function getReference() {
        return $this->reference;
    }

    /**
     * Set reste
     *
     * @param float $reste
     * @return BonLivraisonClient
     */
    public function setReste($reste) {
        $this->reste = $reste;

        return $this;
    }

    /**
     * Get reste
     *
     * @return float 
     */
    public function getReste() {
        return $this->reste;
    }

    /**
     * Set montant_blanc_ttc
     *
     * @param float $montantBlancTtc
     * @return BonLivraisonClient
     */
    public function setMontantBlancTtc($montantBlancTtc) {
        $this->montant_blanc_ttc = $montantBlancTtc;

        return $this;
    }

    /**
     * Get montant_blanc_ttc
     *
     * @return float 
     */
    public function getMontantBlancTtc() {
        return $this->montant_blanc_ttc;
    }

    /**
     * Set montant_noir_ttc
     *
     * @param float $montantNoirTtc
     * @return BonLivraisonClient
     */
    public function setMontantNoirTtc($montantNoirTtc) {
        $this->montant_noir_ttc = $montantNoirTtc;

        return $this;
    }

    /**
     * Get montant_noir_ttc
     *
     * @return float 
     */
    public function getMontantNoirTtc() {
        return $this->montant_noir_ttc;
    }

    /**
     * Set is_supprimer
     *
     * @param boolean $isSupprimer
     * @return BonLivraisonClient
     */
    public function setIsSupprimer($isSupprimer) {
        $this->is_supprimer = $isSupprimer;

        return $this;
    }

    /**
     * Get is_supprimer
     *
     * @return boolean 
     */
    public function getIsSupprimer() {
        return $this->is_supprimer;
    }

    /**
     * Set bon_commande
     *
     * @param \Gds\VenteBundle\Entity\BonCommandeClient $bonCommande
     * @return BonLivraisonClient
     */
    public function setBonCommande(\Gds\VenteBundle\Entity\BonCommandeClient $bonCommande = null) {
        $this->bon_commande = $bonCommande;

        return $this;
    }

    /**
     * Get bon_commande
     *
     * @return \Gds\VenteBundle\Entity\BonCommandeClient 
     */
    public function getBonCommande() {
        return $this->bon_commande;
    }

    /**
     * Add lignes_reglements
     *
     * @param \Gds\VenteBundle\Entity\LigneReglementClient $lignesReglements
     * @return BonLivraisonClient
     */
    public function addLignesReglement(\Gds\VenteBundle\Entity\LigneReglementClient $lignesReglements) {
        $this->lignes_reglements[] = $lignesReglements;

        return $this;
    }

    /**
     * Remove lignes_reglements
     *
     * @param \Gds\VenteBundle\Entity\LigneReglementClient $lignesReglements
     */
    public function removeLignesReglement(\Gds\VenteBundle\Entity\LigneReglementClient $lignesReglements) {
        $this->lignes_reglements->removeElement($lignesReglements);
    }

    /**
     * Get lignes_reglements
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getLignesReglements() {
        return $this->lignes_reglements;
    }

    /**
     * Set client
     *
     * @param \Gds\VenteBundle\Entity\Client $client
     * @return BonLivraisonClient
     */
    public function setClient(\Gds\VenteBundle\Entity\Client $client) {
        $this->client = $client;
        $client->addBonLivraison($this);
        return $this;
    }

    /**
     * Get client
     *
     * @return \Gds\VenteBundle\Entity\Client 
     */
    public function getClient() {
        return $this->client;
    }

    /**
     * Set facture
     *
     * @param \Gds\VenteBundle\Entity\FactureClient $facture
     * @return BonLivraisonClient
     */
    public function setFacture(\Gds\VenteBundle\Entity\FactureClient $facture = null) {
        $this->facture = $facture;

        return $this;
    }

    /**
     * Get facture
     *
     * @return \Gds\VenteBundle\Entity\FactureClient 
     */
    public function getFacture() {
        return $this->facture;
    }

    /**
     * Add lignes_bon_livraison
     *
     * @param \Gds\VenteBundle\Entity\LigneBonLivraisonClient $lignesBonLivraison
     * @return BonLivraisonClient
     */
    public function addLignesBonLivraison(\Gds\VenteBundle\Entity\LigneBonLivraisonClient $lignesBonLivraison) {
        $this->lignes_bon_livraison[] = $lignesBonLivraison;
        $lignesBonLivraison->setBonLivraison($this);
        return $this;
    }

    /**
     * Remove lignes_bon_livraison
     *
     * @param \Gds\VenteBundle\Entity\LigneBonLivraisonClient $lignesBonLivraison
     */
    public function removeLignesBonLivraison(\Gds\VenteBundle\Entity\LigneBonLivraisonClient $lignesBonLivraison) {
        $this->lignes_bon_livraison->removeElement($lignesBonLivraison);
    }

    /**
     * Get lignes_bon_livraison
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getLignesBonLivraison() {
        return $this->lignes_bon_livraison;
    }

    /**
     * Set devis
     *
     * @param \Gds\VenteBundle\Entity\Devis $devis
     * @return BonLivraisonClient
     */
    public function setDevis(\Gds\VenteBundle\Entity\Devis $devis = null) {
        $this->devis = $devis;

        return $this;
    }

    /**
     * Get devis
     *
     * @return \Gds\VenteBundle\Entity\Devis 
     */
    public function getDevis() {
        return $this->devis;
    }

    /**
     * Set departement
     *
     * @param \Gds\ArticleBundle\Entity\Departement $departement
     * @return BonLivraisonClient
     */
    public function setDepartement(\Gds\ArticleBundle\Entity\Departement $departement = null) {
        $this->departement = $departement;

        return $this;
    }

    /**
     * Get departement
     *
     * @return \Gds\ArticleBundle\Entity\Departement 
     */
    public function getDepartement() {
        return $this->departement;
    }

    /**
     * Set user
     *
     * @param \Gds\UserBundle\Entity\User $user
     * @return BonLivraisonClient
     */
    public function setUser(\Gds\UserBundle\Entity\User $user) {
        $this->user = $user;

        return $this;
    }

    /**
     * Get user
     *
     * @return \Gds\UserBundle\Entity\User 
     */
    public function getUser() {
        return $this->user;
    }

    public function canModif() {
        if ($this->getFacture() != null)
            return false;
        return true;
    }

    public function getMontantTtc() {
        return $this->montant_blanc_ttc + $this->montant_noir_ttc;
    }

    public function getTime() {
        $time = $this->getHeure();
        $sec = $time % 60;
        if ($sec < 10)
            $sec = '0' . $sec;
        $reste = (int) ($time / 60);
        $minute = $reste % 60;
        if ($minute < 10)
            $minute = '0' . $minute;
        $heure = (int) ($reste / 60);
        if ($heure < 10)
            $heure = '0' . $heure;
        $res = $heure . ':' . $minute . ':' . $sec;
        return $res;
    }

}
